/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: Frank
 * 系统版本: 1.0.0
 * 开发人员: Frank
 * 开发时间: 2019/8/21 19:17
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.spring.arch.operation.tenant.errorcode;

import com.spring.arch.common.exception.IErrorCode;
import com.spring.arch.common.exception.IErrorCode;

/**
 * 服务异常
 *
 * 参考 https://www.kancloud.cn/onebase/ob/484204 文章
 *
 * 一共 10 位，分成四段
 *
 * 第一段，1 位，类型
 *      1 - 业务级别异常
 *      2 - 系统级别异常
 * 第二段，3 位，服务编码
 *      101 - 租赁中心
 *      102 - 
 *      103 - 
 *      104 - 
 *      105 - 
 *      109 - 
 *      ... - ...
 * 第三段，3 位，模块
 *      不限制规则。
 *      一般建议，每个系统里面，可能有多个模块，可以再去做分段。以用户系统为例子：
 *      	000 - 通用
 *          001 - 房源管理模块
 *          002 - 
 *          003 - 
 * 第四段，3 位，错误码
 *       不限制规则。
 *       一般建议，每个模块自增。
 * @author Frank
 */
public enum TenantErrorCode implements IErrorCode {
	
	/**************通用*************/
    E1201000001(1201000001, "[%s]不存在!"),
    E1201000002(1201000002, "[%s]已经存在,请重新输入!")
    ;

    private int code;
    private String msg;

    /**
     * Msg string.
     *
     * @return the string
     */
    @Override
    public String msg() {
        return msg;
    }

    /**
     * Code int.
     *
     * @return the int
     */
    @Override
    public int code() {
        return code;
    }

    TenantErrorCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 根据错误码获取错误信息
     * @param code 错误码
     * @return 错误信息
     */
    public static String getMsg(int code) {
    	TenantErrorCode[] values = TenantErrorCode.values();
        for (int i = 0; i < values.length; i++) {
            if (code == values[i].code) {
                return values[i].msg;
            }
        }
        return null;
    }
}
